package com.rc.web.mapper;

import com.mybatisflex.core.BaseMapper;
import com.mybatisflex.core.paginate.Page;
import com.mybatisflex.core.query.QueryWrapper;
import com.rc.pojo.dto.ill.IllPageQuery;
import com.rc.pojo.po.Ill;
import com.rc.pojo.vo.ill.IllPageVO;

import java.util.List;

import static com.rc.pojo.po.table.IllTableDef.ILL;
import static com.rc.pojo.po.table.PlantTableDef.PLANT;

/**
 * 病害表 映射层。
 * 提供病害相关的数据库操作接口
 */
public interface IllMapper extends BaseMapper<Ill> {

    /**
     * 根据植物ID查询病害列表
     * @param plantId 植物ID
     * @return 病害列表
     */
    default List<Ill> selectByPlantId(long plantId){
        return selectListByQuery(QueryWrapper.create()
                .where(ILL.PLANT_ID.eq(plantId))
        );
    }

    /**
     * 分页查询病害信息
     * @param dto 分页查询条件
     * @return 分页结果
     */
    default Page<IllPageVO> selectPage(IllPageQuery dto){
        Page<IllPageVO> page = Page.of(dto.getCurrent(),dto.getPageSize());
        return paginateAs(page,QueryWrapper.create()
                        .select(ILL.ALL_COLUMNS,PLANT.NAME.as("plantName"))
                        .join(PLANT)
                        .on(ILL.PLANT_ID.eq(PLANT.ID))
                        .where(ILL.TYPE.eq(dto.getType()))
                ,IllPageVO.class);
    }
}
